package com.ctshk.rpc.finance.req.advance;

import com.ctshk.rpc.finance.json.FileJson;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 申请预付req
 */
@Data
@ApiModel(value = "AdvanceChargeAddApplyReq",description = "申请预付req")
public class AdvanceChargeAddApplyReq implements Serializable {

    @NotNull(message = "供应商ID不能为空")
    @ApiModelProperty(value = "供应商ID",required = true)
    private Long supplierId;

    @NotNull(message = "预收款id不能为空")
    @ApiModelProperty(value = "预收款id",required = true)
    private Long advanceChargeId;

    @NotNull(message = "预收金额不能为空")
    @ApiModelProperty(value = "预收金额",required = true)
    private BigDecimal moneyAmount;

    @NotNull(message = "币种ID不能为空")
    @ApiModelProperty(value = "币种ID",required = true)
    private Long currencyId;

    @NotNull(message = "币种不能为空")
    @ApiModelProperty(value = "币种",required = true)
    private String currency;

    @NotNull(message = "汇率不能为空")
    @ApiModelProperty(value = "汇率",required = true)
    private Double exchangeRate;

    @NotNull(message = "收款方式id不能为空")
    @ApiModelProperty(value = "收款方式id",required = true)
    private Long paymentMethodId;

    @NotNull(message = "收款方式名称不能为空")
    @ApiModelProperty(value = "收款方式名称",required = true)
    private String paymentMethodName;

    @ApiModelProperty(value = "期望付款时间开始")
    private LocalDateTime payTimeBegin;

    @ApiModelProperty(value = "期望付款时间结束")
    private LocalDateTime payTimeEnd;

    @NotNull(message = "适用业务不能为空")
    @ApiModelProperty(value = "适用业务",required = true)
    private Integer businessType;

    @NotNull(message = "附件不能为空")
    @ApiModelProperty(value = "附件",required = true)
    private List<FileJson> fileJson;

    @ApiModelProperty(value = "说明")
    private String explains;

    @ApiModelProperty(value = "用户ID")
    private Long userId;

}
